/*
 * Buffer_salida.cpp
 *
 *  Created on: 22/06/2010
 *      Author: marce
 */

#include "Buffer_salida.h"


Buffer_salida::Buffer_salida(FILE * archivo_salida, unsigned int tamanio_buffer) {
	this->tamanio_buffer = tamanio_buffer;
	this->archivo = archivo_salida;
	this->cant_escritos = 0;
	this->buffer = new char [this->tamanio_buffer];
}

void Buffer_salida::agregarCaracter(char caracter) {
	this->buffer[this->cant_escritos] = caracter;
	this->cant_escritos++;
	if (this->cant_escritos == this->tamanio_buffer) {
		//Descargo el buffer
		fwrite(this->buffer,this->cant_escritos,1,this->archivo);
		fflush(this->archivo);
		//reinicio el contador
		this->cant_escritos=0;
	}
}

Buffer_salida::~Buffer_salida() {
	//Quedo algo en el buffer?
	if (this->cant_escritos > 0) {
		fwrite(this->buffer,this->cant_escritos,1,this->archivo);
		fflush(this->archivo);
	}
	delete[](this->buffer);
}
